home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 September & October / Amiga-CD 1996 #9-10.iso / demos / storm-c / stormc / include / string.h < prev    next >
C/C++ Source or Header  |  1996-06-13  |  3KB  |  157 lines

  1. #ifndef _INCLUDE_STRING_H
  2. #define _INCLUDE_STRING_H
  3.  
  4. /*
  5. **  $VER: string.h 1.1 (13.6.96)
  6. **  StormC Release 1.1
  7. **
  8. **  '(C) Copyright 1995 Haage & Partner Computer GmbH'
  9. **     All Rights Reserved
  10. */
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. #ifndef NULL
  17. #define NULL 0
  18. #endif
  19.  
  20. typedef unsigned int size_t;
  21.  
  22. #ifdef _INLINE_INCLUDES
  23. __inline char *strcpy (char *d, const char *s)
  24. {
  25.     char *e = d;
  26.     while (*(e++) = *(s++))
  27.         ;
  28.     return d;
  29. }
  30. #else
  31. char *strcpy (char *, const char *);
  32. #endif
  33.  
  34. char *strncpy(char *, const char *, size_t);
  35.  
  36. #ifdef _INLINE_INCLUDES
  37. __inline char *strcat (char *d, const char *s)
  38. {
  39.     char *e = d;
  40.     while (*(e++))
  41.         ;
  42.     e--;
  43.     while (*(e++) = *(s++))
  44.         ;
  45.     return d;
  46. }
  47. #else
  48. char *strcat (char *, const char *);
  49. #endif
  50.  
  51. char *strncat(char *, const char *, size_t);
  52.  
  53. #ifdef _INLINE_INCLUDES
  54. __inline int strcmp(const char *s1, const char *s2)
  55. {
  56.     int retval = 0;
  57.     char ch1,ch2;
  58.     while ((ch1 = *(s1++)) && ch1 == *(s2++))
  59.         ;
  60.     return ch1 ? ((ch2 = *(s2-1)) == ch1 ? 0 : (ch1 < ch2 ? -1 : 1)) : (*s2 ? -1 : 0);
  61. }
  62. #else
  63. int strcmp (const char *, const char *);
  64. #endif
  65.  
  66. int strncmp(const char *, const char *, size_t);
  67. char *strchr (const char *, int);
  68. char *strrchr(const char *, int);
  69. size_t strspn (const char *, const char *);
  70. size_t strcspn(const char *, const char *);
  71. char *strpbrk(const char *, const char *);
  72. char *strstr(const char *, const char *);
  73.  
  74. #ifdef _INLINE_INCLUDES
  75. __inline size_t strlen(const char *s)
  76. {
  77.     const char *t = s;
  78.     while (*(t++))
  79.         ;
  80.     return (size_t) (t - s - 1);
  81. }
  82. #else
  83. size_t strlen(const char *);
  84. #endif
  85.  
  86. char *strerror(int);
  87. char *strtok(char *, const char *);
  88.  
  89. int stricmp(const char *, const char *);
  90. char *strlwr(char *);
  91. char *strupr(char *);
  92.  
  93. #ifdef _INLINE_INCLUDES
  94. __inline void *memcpy(void *d, const void *s, size_t n)
  95. {
  96.     void *r = d;
  97.     n++;
  98.     while (--n > 0)
  99.     {
  100.         *(((unsigned char *) d)++) = *(((unsigned char *) s)++);
  101.     };
  102.     return r;
  103. }
  104. #else
  105. void *memcpy(void *, const void *, size_t);
  106. #endif
  107.  
  108. #ifdef _INLINE_INCLUDES
  109. __inline void *memmove(void *d, const void *s, size_t n)
  110. {
  111.     void *r = d;
  112.     if ((unsigned char *) d > (unsigned char *) s)
  113.     {
  114.         n++;
  115.         while (--n > 0)
  116.         {
  117.             *(((unsigned char *) d)++) = *(((unsigned char *) s)++);
  118.         };
  119.     }
  120.     else
  121.     {
  122.         (unsigned char *) d += n;
  123.         (unsigned char *) s += n;
  124.         n++;
  125.         while (--n > 0)
  126.             *(--((unsigned char *) d)) = *(--((unsigned char *) s));
  127.     };
  128.     return r;
  129. }
  130. #else
  131. void *memmove(void *, const void *, size_t);
  132. #endif
  133.  
  134. int memcmp(const void *, const void *, size_t);
  135. void *memchr(const void *, int, size_t);
  136.  
  137. #ifdef _INLINE_INCLUDES
  138. void *memset(void *m, int c, size_t n)
  139. {
  140.     void *r = m;
  141.     n++;
  142.     while (--n > 0)
  143.         *(((unsigned char *) m)++) = (unsigned char) c;
  144.     return r;
  145. }
  146. #else
  147. void *memset(void *, int, size_t);
  148. #endif
  149.  
  150. #define bzero(a,b) memset(a,0,b)
  151.  
  152. #ifdef __cplusplus
  153. }
  154. #endif
  155.  
  156. #endif
  157.